﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using Telerik.Web.UI;
using SMA.GENTEv1;

public partial class _includes__popup_ipIncluirParamBenefCB : PageBase
{
    private string tipoRegra = "";
    private int idConvencao = 0;
    private int idContrato = 0;

    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            if (Request.QueryString["TipoRegra"] != null)
                tipoRegra = Request.QueryString["TipoRegra"].ToString();

            if (Request.QueryString["IdConvencao"] != null)
                idConvencao = int.Parse(Request.QueryString["IdConvencao"].ToString());

            if (Request.QueryString["IdContrato"] != null)
                idContrato = int.Parse(Request.QueryString["IdContrato"].ToString());

            if (!IsPostBack)
                CarregarLocalidade(rcbLocalidade);
        }
        catch (Exception ex)
        {
            ExibirMensagem(true, ex.Message);
        }
    }

    #region Eventos
    protected void btnSalvar_Click(object sender, EventArgs e)
    {
        try
        {
            switch (tipoRegra)
            {
                case "2":
                    SalvarConfigConvencao();
                    break;
                case "3":
                    SalvarConfigContrato();
                    break;
                case "4":
                    SalvarConfigLiberalidade();
                    break;
            }

            ClientScript.RegisterStartupScript(Page.GetType(), "mykey", "CloseAndRebind('email');", true);
        }
        catch (Exception ex)
        {
            ExibirMensagem(true, ex.Message);
        }
    }

    protected void btnLimpar_Click(object sender, EventArgs e)
    {
        rcbLocalidade.Text = "";
        rdpDataInicial.SelectedDate = null;
        rdpDataFinal.SelectedDate = null;
    }
    #endregion

    #region Metodos
    private void CarregarLocalidade(RadComboBox combo)
    {
        try
        {
            FrotaRegraContrato regraContrato = new FrotaRegraContrato();

            combo.DataSource = regraContrato.CarregarLocalidadesOrganizacao(IdPrestador);
            combo.DataBind();
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

    private void SalvarConfigConvencao()
    {
        try
        {
            ConfiguracaoRegraConvencao configConvencao = new ConfiguracaoRegraConvencao();
            configConvencao.Convencao = new Convencao(idConvencao, false);
            configConvencao.Beneficio = new TipoBeneficio((int)TipoBeneficio.TipoBenef.Cesta_Basica, false);

            if (rdpDataInicial.SelectedDate != null)
                configConvencao.DtInicio = DateTime.Parse(rdpDataInicial.SelectedDate.ToString());
            if (rdpDataFinal.SelectedDate != null)
                configConvencao.DtFim = DateTime.Parse(rdpDataFinal.SelectedDate.ToString());

            configConvencao.Status = new Status(1);
            configConvencao.Valor = 1;
            configConvencao.TipoValor = new TipoValor((int)TipoValor.Tipo.Unidade, false);
            configConvencao.Obrigatorio = "S";
            configConvencao.ExtensivoDependente = "N";
            configConvencao.DescontoFolha = "N";

            foreach (RadComboBoxItem item in rcbLocalidade.Items)
            {
                CheckBox chk = (CheckBox)item.FindControl("chk1");
                if (chk.Checked)
                {
                    Cidade cidade = new Cidade() { IdCidade = int.Parse(item.Value) };
                    if (configConvencao.Localidade == null)
                        configConvencao.Localidade = new List<Cidade>();
                    configConvencao.Localidade.Add(cidade);
                }
            }

            if (configConvencao.Localidade == null || configConvencao.Localidade.Count == 0)
                throw new Exception("É necessário selecionar ao menos uma localidade para configurar o benefício para convenção!");

            configConvencao.Salvar();
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

    private void SalvarConfigContrato()
    {
        try
        {
            ConfiguracaoRegraContrato configContrato = new ConfiguracaoRegraContrato();
            configContrato.Contrato = new Contrato(idContrato);
            configContrato.Beneficio = new TipoBeneficio((int)TipoBeneficio.TipoBenef.Cesta_Basica, false);

            if (rdpDataInicial.SelectedDate != null)
                configContrato.DtInicio = DateTime.Parse(rdpDataInicial.SelectedDate.ToString());
            if (rdpDataFinal.SelectedDate != null)
                configContrato.DtFim = DateTime.Parse(rdpDataFinal.SelectedDate.ToString());

            configContrato.Status = new Status(1);
            configContrato.Valor = 1;
            configContrato.TipoValor = new TipoValor((int)TipoValor.Tipo.Unidade, false);
            configContrato.Obrigatorio = "S";
            configContrato.ExtensivoDependente = "N";
            configContrato.DescontoFolha = "N";

            foreach (RadComboBoxItem item in rcbLocalidade.Items)
            {
                CheckBox chk = (CheckBox)item.FindControl("chk1");
                if (chk.Checked)
                {
                    Cidade cidade = new Cidade() { IdCidade = int.Parse(item.Value) };
                    if (configContrato.Localidade == null)
                        configContrato.Localidade = new List<Cidade>();
                    configContrato.Localidade.Add(cidade);
                }
            }

            if (configContrato.Localidade.Count == 0)
                throw new Exception("É necessário selecionar ao menos uma localidade para configurar o benefício para contrato!");

            configContrato.Salvar();
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

    private void SalvarConfigLiberalidade()
    {
        try
        {
            ConfiguracaoRegraLiberalidade configLiberalidade = new ConfiguracaoRegraLiberalidade();
            configLiberalidade.Organizacao = new Organizacao(IdPrestador);
            configLiberalidade.Beneficio = new TipoBeneficio((int)TipoBeneficio.TipoBenef.Cesta_Basica, false);

            if (rdpDataInicial.SelectedDate != null)
                configLiberalidade.DtInicio = DateTime.Parse(rdpDataInicial.SelectedDate.ToString());
            if (rdpDataFinal.SelectedDate != null)
                configLiberalidade.DtFim = DateTime.Parse(rdpDataFinal.SelectedDate.ToString());

            configLiberalidade.Status = new Status(1);
            configLiberalidade.Valor = 1;
            configLiberalidade.TipoValor = new TipoValor((int)TipoValor.Tipo.Unidade, false);
            configLiberalidade.Obrigatorio = "S";
            configLiberalidade.ExtensivoDependente = "N";
            configLiberalidade.DescontoFolha = "N";

            foreach (RadComboBoxItem item in rcbLocalidade.Items)
            {
                CheckBox chk = (CheckBox)item.FindControl("chk1");
                if (chk.Checked)
                {
                    Cidade cidade = new Cidade() { IdCidade = int.Parse(item.Value) };
                    if (configLiberalidade.Localidade == null)
                        configLiberalidade.Localidade = new List<Cidade>();
                    configLiberalidade.Localidade.Add(cidade);
                }
            }

            if (configLiberalidade.Localidade.Count == 0)
                throw new Exception("É necessário selecionar ao menos uma localidade para configurar o benefício para liberalidade!");

            configLiberalidade.Salvar();
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

    private void ExibirMensagem(bool _msgErro, string _textoMsg)
    {
        try
        {
            OcultaMsgPagina(false);
            if (_msgErro)
            {
                lblResultado.ForeColor = System.Drawing.Color.Red;
                lblResultado.Text = _textoMsg;
            }
            else
            {
                lblResultado.ForeColor = System.Drawing.Color.Black;
                lblResultado.Text = _textoMsg;
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

    private void OcultaMsgPagina(bool oculta)
    {
        trMensagem.Visible = !oculta;
    }
    #endregion
}
